home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / -in_the_mag- / reader_requests / wild / support / threegradesolve.bas < prev   
BASIC Source File  |  2000-02-23  |  2KB  |  70 lines

  1. DEFDBL a,b,c,d,x,y
  2. '$include basu:_waitkey.bas
  3.  
  4. SCREEN 1,720,400,2,5
  5. WINDOW 1,"Funzione di grado 3",,,1
  6.  
  7. ox=200
  8. oy=100
  9.  
  10. 'INPUT "Spazio iniziale funzione a                       ",ad
  11. 'INPUT "Velocità iniziale funzione a                     ",ac
  12. 'INPUT "Accelerazione iniziale funzione a                ",ab:ab=ab/2
  13. 'INPUT "Variazione di accelerazione funzione a           ",aa:aa=aa/6
  14.  
  15. 'INPUT "Spazio iniziale funzione b                       ",bd
  16. 'INPUT "Velocità iniziale funzione b                     ",bc
  17. 'INPUT "Accelerazione iniziale funzione b                ",bb:bb=bb/2
  18. 'INPUT "Variazione di accelerazione funzione b           ",ba:ba=ba/6
  19.  
  20. ad=0    :ac=-520    :ab=10    :aa=.10                :ab=ab/2:aa=aa/6
  21. bd=0    :bc=-500:bb=-21    :ba=+.1                :bb=bb/2:ba=ba/6
  22. cd=ad-bd:cc=ac-bc:cb=ab-bb:ca=aa-ba
  23.  
  24. s=1:ox=360:oy=200:sy=.001
  25. GOSUB Draw
  26. REPEAT see
  27.  a$=WaitKey$
  28.  IF a$="6" THEN ox=ox+1:GOSUB Draw
  29.  IF a$="4" THEN ox=ox-1:GOSUB Draw
  30.  IF a$="8" THEN oy=oy-1:GOSUB Draw
  31.  IF a$="2" THEN oy=oy+1:GOSUB Draw
  32.  IF a$="+" THEN s=s*1.3:GOSUB Draw
  33.  IF a$="-" THEN s=s*.7:GOSUB Draw 
  34.  IF a$="x" THEN EXIT see
  35.  IF a$="c" THEN CLS:GOSUB Draw
  36. END REPEAT see
  37. WINDOW CLOSE 1
  38. SCREEN CLOSE 1
  39. END
  40.  
  41. Draw: 
  42. COLOR 2,0:LOCATE 1,1:PRINT SPACE$(50):LOCATE 1,1:PRINT "a:a,b,c,d",aa,ab,ac,ad
  43. ''COLOR 1,0:LOCATE 2,1:PRINT SPACE$(50):LOCATE 2,1:PRINT "b:a,b,c,d",ba,bb,bc,bd
  44. ''COLOR 3,0:LOCATE 3,1:PRINT SPACE$(50):LOCATE 3,1:PRINT "c:a,b,c,d",ca,cb,cc,cd
  45. GOSUB Axis
  46. CALL DrawThree(aa,ab,ac,ad,2)
  47. ''CALL DrawThree(ba,bb,bc,bd,1)
  48. ''CALL DrawThree(ca,cb,cc,cd,3)
  49. RETURN
  50.  
  51. SUB DrawThree(a,b,c,d,col)
  52. SHARED ox,oy,s,sy
  53. LOCAL i
  54. FOR i=0 TO 720
  55. x=(i-ox)/s
  56. y=-(x^3*a+x^2*b+x*c+d)*sy+oy
  57. yy=(x^2*a*3+b*2*x+c)
  58. IF ABS(yy)<5 THEN CIRCLE (i,y),5,3:PRINT x,(-b-SQR(b*b+2*a*c))/a
  59. IF y>0 AND y<400 THEN PSET (i,y),col:IF ABS((-b/(2*a))-x)<.5 THEN CIRCLE (i,y),5,col
  60. NEXT i
  61. END SUB
  62.  
  63. Axis:
  64. LINE (0,oy)-(720,oy),3
  65. LINE (ox,0)-(ox,400),3
  66. RETURN
  67.  
  68.  
  69.  
  70.